#!/bin/sh

WINLOCAL=/home/jm/H-win/local

set -e

if [ -z "$1" ]; then
    echo "build_release <version> [nobin]"
    exit 1
fi

TMP=tmp.build_release
RELDIR=`pwd`/Release
VER=$1
NOW=`date +%Y-%m-%d`

echo "Version: $VER - $NOW"

DATEw=`head -n 3 wpa_supplicant/ChangeLog | tail -n 1 | sed "s/ .*//"`
DATEh=`head -n 3 hostapd/ChangeLog | tail -n 1 | sed "s/ .*//"`

if [ "$DATEw" != "$NOW" -o "$DATEh" != "$NOW" ]; then
    echo "NOTE! Date mismatch in ChangeLog: wpa_supplicant $DATEw hostapd $DATEh != $NOW"
fi

if [ -r $TMP ]; then
    echo "Temporary directory '$TMP' exists. Remove it before running this."
    exit 1
fi

mkdir $TMP
mkdir -p $RELDIR

git archive --format=tar --prefix=wpa-$VER/ HEAD \
	README COPYING patches src wpa_supplicant hostapd |
	gzip > $RELDIR/wpa-$VER.tar.gz
git archive --format=tar --prefix=hostapd-$VER/ HEAD \
	README COPYING patches src hostapd |
	gzip > $RELDIR/hostapd-$VER.tar.gz
git archive --format=tar --prefix=wpa_supplicant-$VER/ HEAD \
	README COPYING patches src wpa_supplicant |
	tar --directory=$TMP -xf -

cd $TMP
make -C wpa_supplicant-$VER/wpa_supplicant/doc/docbook man
rm -f wpa_supplicant-$VER/wpa_supplicant/doc/docbook/manpage.{links,refs}
tar czf $RELDIR/wpa_supplicant-$VER.tar.gz wpa_supplicant-$VER
cd ..
rm -r $TMP

if [ "$2" = "nobin" ]; then
    exit 0
fi


cd $RELDIR

    PDIR=wpa_supplicant-$VER
    WDIR=wpa_supplicant-windows-bin-$VER
    tar xzf $PDIR.tar.gz
    mkdir "$WDIR"
    cd "$PDIR/wpa_supplicant"
    cat > .config <<EOF
CONFIG_DRIVER_NDIS=y
CONFIG_NATIVE_WINDOWS=y

CC=i586-mingw32msvc-gcc
STRIP=i586-mingw32msvc-strip
PLATFORMSDKLIB=$WINLOCAL/lib
CONFIG_NDIS_EVENTS_INTEGRATED=y

CFLAGS += -I$WINLOCAL/include
LIBS += -L$WINLOCAL/lib
LIBS_w += -L$WINLOCAL/lib
LIBS_p += -L$WINLOCAL/lib

CONFIG_EAP_SIM=y
CONFIG_SIM_SIMULATOR=y
CONFIG_EAP_AKA=y
CONFIG_USIM_SIMULATOR=y
CONFIG_EAP_LEAP=y
CONFIG_EAP_FAST=y
CONFIG_EAP_TLS=y

CONFIG_CTRL_IFACE=y
CONFIG_EAP_FAST=y
CONFIG_EAP_MSCHAPV2=y
CONFIG_EAP_TTLS=y
CONFIG_EAP_PEAP=y
CONFIG_EAP_MD5=y
CONFIG_EAP_GTC=y
CONFIG_EAP_OTP=y
CONFIG_EAP_PAX=y
CONFIG_EAP_SAKE=y
CONFIG_EAP_PSK=y
CONFIG_EAP_TNC=y
CONFIG_PKCS12=y
CONFIG_PCSC=y
CONFIG_WPS=y

CONFIG_L2_PACKET=winpcap
CONFIG_MAIN=main_winsvc
CONFIG_BACKEND=winreg
CONFIG_ELOOP=eloop_win
CFLAGS += -DCONFIG_DEBUG_FILE
EOF

    # First, build the Windows service & registry version and rename it
    make -j2 windows-bin
    mv wpa_supplicant.exe wpasvc.exe

    # Then, build "the standard" wpa_supplicant.exe
    cat >> .config <<EOF
CONFIG_MAIN=main
CONFIG_BACKEND=file
EOF

    make -j2 windows-bin

    for i in COPYING; do
	unix2dos < ../$i > ../../"$WDIR"/$i
    done
    for i in README README-Windows.txt wpa_supplicant.conf; do
	unix2dos < $i > ../../"$WDIR"/$i
    done
    mv *.exe ../../"$WDIR"
    cp win_example.reg ../../"$WDIR"

    cd wpa_gui-qt4
    make -C icons
    qmake -spec win32-x-g++
    make -j2
    cp release/wpa_gui.exe ../../../"$WDIR"
    lrelease wpa_gui.pro
    cp lang/wpa_gui_de.qm ../../../"$WDIR"
    cd ../../..
    rm -rf "$PDIR"
    zip "$WDIR.zip" "$WDIR"/*
    rm -rf "$WDIR"

cd $RELDIR/..

./build_nsis.sh "$RELDIR/$WDIR.zip"
mv wpa_supplicant-$VER.exe $RELDIR

ls -l $RELDIR/*$VER*

exit 0
